<?php
/**
 * An interface that every model must implement
 *
 * @author Ishtiaque Shahrier <md.ishtiaque@newgenbd.net>
 * @package core
 * @subpackage libraries
 */
interface i_base_model {
    /**
     * Returns codeigniter object.
     *
     * @return object
     */
    public function ci();
    /**
     * Gets database object with default configuration
     *
     * @return object
     */
    public function db();
    /**
     * Should load all aditoinal properties for the model
     *
     * Additional properties that gets loaded dynamically
     * are usually stored in the "properties" folder in the "application folder"
     *
     */
    public function load_dynamic_properties();
    /**
     * Should load/modify all aditoinal attributes
     *
     * Additional "atributes" that gets loaded dynamically
     * are usually stored in the "attributes" folder in the "application folder"
     *
     *
     */
    public function load_dynamic_attributes();
    /**
     * Counts total loaded dynamic properties
     *
     * @return integer
     */
    public function count_dynamic_props();
    /**
     * Lists all dynamic properties
     *
     * @return array
     */
    public function list_dynamic_props();

    /**
     * Simplifies the data model and returns only raw/simple data object
     * @return a_model2data_converter
     */
    public function convert_to_simple_data();
}

?>
